package com.ling.travels.controller;

import com.ling.travels.pojo.Province;
import com.ling.travels.pojo.Result;
import com.ling.travels.service.ProvinceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author 编程之外
 * @company lingStudy
 * @create 2020-06-29 18:28
 */
@RestController
@CrossOrigin   // 允许跨域
public class ProvinceController {

    @Autowired
    private ProvinceService provinceService;

    //查询所有
    // page：当前页码，rows：每页显示的记录数
    @GetMapping("/findByPage")
    public Map<String, Object> findByPage(String name, Integer page, Integer rows) {
        // 第一次访问默认数据设置
        page = page == null ? 1 : page;
        rows = rows == null ? 5 : rows;

        //分页处理，limit  起始值，页面大小  起始页码 = (当前页码 -1)*每页条数

        //接收当前页码和每页大小，调用service层 在service层的实现类中计算出 起始页码，并得到service调用dao层的查询结果
        List<Province> provinceList = provinceService.findByPage(name, page, rows);
        // 计算总页数=总条数/每页显示的记录数
        Integer totals = provinceService.findTotals(name);
        Integer sumPage = totals % rows == 0 ? totals / rows : totals / rows + 1;

        Map<String, Object> map = new HashMap<>();
        map.put("provinceList", provinceList); // 所有省份信息集合
        map.put("totals", totals);  //数据总条数
        map.put("sumPage", sumPage);  // 总页数
        map.put("page", page);  // 当前页码
        return map;
    }

    //添加省份方法
    // 注意！注意！注意！一定要注意，这里被坑了好久： 这里不加 @RequestBody 接收不到前端传来的请求参数(Province对象)
    @Transactional
    @PostMapping("/add")
    public Result save(@RequestBody Province province) {
        System.out.println("前端传来的Info" + province);
        Result result = new Result();
        try {
            provinceService.save(province);
            result.setMsg("添加成功！");
        } catch (Exception e) {
            e.printStackTrace();
            result.setState(false).setMsg("添加省份信息失败！");
        }
        return result;
    }

    @RequestMapping("/delete")
    public Result delete(String id){
        System.out.println("前端传来的id：" + id);
        Result result = new Result();
        try {
            provinceService.delete(id);
            result.setMsg("删除成功！");
        } catch (Exception e) {
            e.printStackTrace();
            result.setState(false).setMsg("删除失败！");
        }
        return result;
    }


}
